若依框架

您所在的位置:网站首页 github pagehelper 报错 若依框架

若依框架

2023-03-08 06:33| 来源: 网络整理| 查看: 265

若依框架---PageHelper分页(十五)_java

我们接着昨天的文章继续阅读PageHelper的项目源码。

昨日文章中我们介绍了​​com.github.pagehelper.page​​​包中的两个类:​​PageParams​​​以及​​PageBoundSqlInterceptors​​​。了解到​​PageParams​​​可以保存分页参数,而执行SQL的拦截器可以按照指定的次序保存在​​PageBoundSqlInterceptors.chain​​中。

并且作者在代码中使用了大量的​​java.util.Properties​​​类的接口,我们也学习到了如何使用​​java.util.Properties​​​类,以及​​Class.forName(xx).newInstance()​​这一创建对象的方式。

 通过我们测试Class.forName(xx).newInstance(),这一创建对象的方式已经是“废弃”了,即​​Deprecated​​,现在应该使用如下方式:

Object ob = Class.forName("xxx").getDeclaredConstructor(...).newInstance(...)

今天我们继续来看​​com.github.pagehelper.page​​​中的其他两个类:​​PageMethod​​​以及​​PageAutoDialect​​

PageMethod

​​PageMethod​​​,基础分页方法,有两个静态变量,一个是我们前面已经熟知的​​LOCAL_PAGE​​​,线程局部变量;另一个静态变量​​DEFAULT_COUNT​​,默认值为true。

其中的方法大致可以划分为:

LOCAL_PAGE的setter/getter/clear方法: ​​setLocalPage/getLocalPage/clearPage​​;获取查询count总数的方法:​​long count(select)​​;五种参数的名为​​startPage​​方法;两种参数形式的​​offsetPage​​方法;设置参数的orderBy属性的​​orderBy​​方法;通过配置文件设置​​DEFAULT_COUNT​​​值的​​setStaticProperties​​方法。

看到​​startPage​​​方法我们或许会有些眼熟,没错,在Controller接口入口处执行的方法不也叫​​startPage​​​吗,通过查找若依系统源码,我们发现某个Controller中调用的​​startPage​​​方法入口均为​​BaseController​​中的startPage方法,并在方法内部有:

PageHelper.startPage(pageNum, pageSize, orderBy).....

若依框架---PageHelper分页(十五)_若依框架_02

而PageHelper的类定义为:

public class PageHelper extends PageMethod implements Dialect, BoundSqlInterceptor.Chain { // 此处省略类内部代码}

即​​PageHelper​​​是​​PageMethod​​​的子类,而实际执行的​​startPage​​​方法正是PageMethod中的​​startPage​​方法。

根据我们前面的解读,我们知道​​startPage​​​方法的重要作用就是设置Page变量,并存储在线程局部变量​​LOCAL_PAGE​​中以便后续执行分页sql时获取。

根据PageHelper中的文档​​HowToUse.md​​​以及源码,我们了解到​​offsetPage​​​与​​startPage​​方法作用相似。(源码显示offsetPage方法不支持设置reasonable与pageSizeZero参数)。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3